Fric-frac Master Page
Home

Fric-frac Master Page

Fric-frac Master Page

Sommige onderdelen komen op alle pagina's van de website voor. Deze onderdelen groeperen we in een master page. ASP.NET MVC heeft daar een speciale techniek voor: masterpages. Als je een nieuw ASP.NET MVC project creëert heet dat bestand _Layout.cshtml en staat het in de Views/Shared map. We maken een eigen master page met de naam MasterLayout.cshtml.

Probleem

Als je de Fric-frac Wireframes met elkaar vergelijkt stel je vast dat alle pagina's een zelfde basisstructuur hebben. Een header, een main en een footer element.

Alle pagina's hebben die basisstructuur:

  1. een main sectie met daarin:
    1. een controlepaneel
    2. een showroom
  2. een footer

Het is een goed idee om duidelijke namen aan die onderdelen te geven. De gehele website beschouwen we als een toren. Elke pagina is een verdieping en op elke verdieping hebben we een showroom en een controlepaneel. In de showroom laten we de bezoeker zien wat die pagina te bieden heeft. In het controlepaneel staat de naam van de pagina en knoppen waarmee je van de ene naar de andere verdieping kan gaan. Dat het het tower pattern. De de namen van het Tower Pattern gebruiken voor de CSS klassennamen zoals je hieronder in de HTML zal zien.

Vermits de footer op alle verdiepingen dezelfde is, behoort die bij de toren. De footer bevat algemene informatie over de app en behoort niet tot de essentie van een pagina. De gebruiker moet dus naar onder scrollen om de inhoud van de footer te kunnen zien.

Design

De elementen die op elke pagina herhaald worden plaatsen we in de MasterLayout.cshtml pagina. De css bestanden die door alle pagina's gebruikt worden zetten we ook op de master page. Ik heb verschillende css bestanden omwille van pedagogische redenen. Op die manier is de opbouw van de CSS overzichterlijker. Voor een website in productie is het best al die CSS bestanden in één bestand te stoppen.

De Razor instructie @RenderBody() zorgt ervoor dat het variabele gedeelte, dat van pagina tot pagina verschilt, getoond wordt. We hebben ook de footer gevuld met info over de webwinkel. Voor de indeling gebruiken we een microformaat.

Oplossing

Maak een MasterLayout.cshtml bestand in de map Views/Shared:

Fric-frac Add New Item Layout Page
Fric-frac Add New Item Layout Page
Fric-frac Add New Item Layout Dialog Box
Fric-frac Add New Item Layout Dialog Box

Het bestand met de naam MasterPage.cshtml wordt aangemaakt en in de map Views/Shared geplaatst. Open het bestand en je ziet dat ASP.NET MVC de basisstructuur voor een HTML pagina heeft toegevoegd:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div>
        @RenderBody()
    </div>
</body>
</html>

In de code hierboven zie je twee Razor statements staan. De @ViewBag is een container waarmee je gegevens van de Controller naar de View kan doorgeven. Zie het als het een boodschappentas waarmee je inkopen van de winkel mee naar huis brengt.

De @RenderBody methode wordt door ASP.NET MVC gebruikt om de View die met een MasterLayout is gemaakt hier te inserten.

Kopiëer de volgende HTML daarin:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body class="tower">
    <main class="floor">
        @RenderBody()
    </main>
    <footer>
        <p class="copy">concept & design - Red Mind 2017-2018</p>
        <p><a href="/Admin/Index">Beheer</a></p> <div class="vcard">
            <h3>Contact</h3> <p class="fn org">a n<span>orm</span> apart</p>
            <div class="adr">
                <div class="street-address">Braziliëstraat 38</div>
                <div class="postal-code">2000</div> <div class="locality">Antwerpen</div>
                <div class="country-name">België</div>
            </div>
        </div>
    </footer>
</body>
</html>

Om het adres in te delen gebruiken we een midroformaat. De link naar de admin pagina staat in de footer en de url is /Admin/Index. Dat verwijst naar de Controller met de naam Admin en de methode Index en naar de View Index.cshtml in de Views/Admin map.

JI
2018-01-03 14:20:59